﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Box.BL;
using Box.Entities;
using Microsoft.Practices.Unity;
using System.Web.Http.Description;
namespace Box.Api.Controllers
{

    public class CategoriaController : ApiController
    {
        [Dependency]
        public ICategoriaBL CategoriaService { get; set; }
        public List<Categoria> Get()
        {
            return CategoriaService.GetFromCategoriasByCriterio("");
        }
        public List<Categoria> Get(string criterio)
        {
            return CategoriaService.GetFromCategoriasByCriterio(criterio);
        }

        [ResponseType(typeof(Categoria))]
        public IHttpActionResult Get(Int32 id)
        {
            var categoria = CategoriaService.GetFromCategoriasById(id);
            if (categoria == null)
            {
                return NotFound();
            }
            return Ok(categoria);
        }

        [ResponseType(typeof(Categoria))]
        public IHttpActionResult Post(Categoria categoria)
        {
            CategoriaService.AddCategoria(categoria);
            return CreatedAtRoute("DefaultApi", new { id = categoria.Id }, categoria);
        }

        [ResponseType(typeof(Categoria))]
        public IHttpActionResult Put(Categoria categoria)
        {
            var existe = CategoriaService.ExisteCategoria(categoria.Id);
            if (!existe)
                return NotFound();
            CategoriaService.UpdateCategoria(categoria);
            return Ok(categoria);
        }

        public IHttpActionResult Delete(Int32 id)
        {
            var existe = CategoriaService.ExisteCategoria(id);

            if (!existe)
                return NotFound();

            CategoriaService.RemoveCategoria(id);

            return Ok();
        }

    }
}
